دنیای فناوری اطلاعات مملو از تخصصها و حوزههایی است که هریک از آنها جایگاه خود را دارند و ترکیب این نقشها با یکدیگر است که باعث میشود محصول یکپارچه و دقیق آماده شود. یکی از مهمترین مشاغل دنیای فناوری اطلاعات طراح نرمافزار است. در سادهترین تعریف طراحی نرمافزار فرآیند حل مسئله و برنامهریزی در راستای ساخت یک نرمافزار است. به بیان دقیقتر، طراحی نرمافزار فرایندی است که توسط آن یک برنامهنویس یا تیمی از برنامهنویسان، مشخصهای از نرمافزار را طراحی میکنند که هدف آن به انجام رساندن اهداف از پیش تعیین شده با استفاده از مجموعهای از مولفههای اولیه با توجه به محدودیتها است. طراح نرمافزار یا معمار ممکن است به مشکلی برخورد کنند که قبلاً توسط افراد دیگری دید شده و حل شده است. استفاده مجدد از این الگوها میتواند به سرعت بخشیدن به فرایند توسعه نرمافزار کمک کند. طراحی نرمافزار میتواند تمام فعالیتهای مربوط به مفهومسازی، طراحی، اجرا، راهاندازی و اصلاح سیستمهای پیچیده در یک چرخه مهندسی نرمافزار را شامل شود.
طراحی نرمافزار چیست؟
طراحی نرمافزار فرآیند پیشبینی و تعریف راهحلهای نرمافزاری به یک یا تعدادی از مشکلات است. یکی از مولفههای اصلی طراحی نرمافزار، تجزیه و تحلیل است. تجزیه و تحلیل بخشی از فرآیند توسعه نرمافزار است که مشخصات مورد استفاده در مهندسی نرمافزار را فهرست میکند. اگر نرمافزار بهطور کامل خودکار باشد، طراحی نرمافزاری ممکن است همانند طراحی یک فلوچارت دنبالهای از رویدادهای برنامهریزی شده ساده باشد. علاوه بر این، روشهای نیمه استاندارد مانند زبان مدلسازی یکسان و مفاهیم مدلسازی اساسی وجود دارد. در هر صورت، بعضی مستندات این طرح معمولاً محصول طراحی است. تفاوت اصلی بین تجزیه و تحلیل نرمافزار و طراحی نرمافزار این است که خروجی یک تجزیه و تحلیل نرمافزاری از مشکلات کوچکتر برای حل مسئله تشکیل شده است. بسته به محیط، طراحی اغلب متفاوت است، چه از طریق چارچوبهای قابل اعتماد چه با الگوهای طراحی مناسب پیادهسازی شده باشد. نمونههای طراحی شامل سیستمهای عملیاتی، صفحات وب، دستگاههای تلفن همراه یا حتی پارادایم ابری جدید است. طراحی نرمافزار هم یک فرایند و هم یک مدل است. فرایند طراحی یک دنباله ای از مراحل است که طراح را قادر میسازد که تمام جنبههای ساخت نرمافزار را توصیف کند. مهارت خلاقیت، تجربیات گذشته، حس اینکه چه چیزی نرمافزار «خوب» را میسازد و تعهد کلی به کیفیت، نمونههایی از عوامل موفقیت قطعی برای یک طراحی مناسب است. با این وجود مهم است که توجه داشته باشید که فرایند طراحی همیشه یک روش ساده نیست؛ مدل طراحی را میتوان با طراحی معماری خانه مقایسه کرد.
چرا طراحان نرمافزار باید در ارتباط با یک زبان مدلسازی مهارت داشته باشند؟
زبان مدلسازی برای بیان اطلاعات، دانش یا سیستمها در یک ساختار تعریف شده توسط مجموعهای از قوانین ثابت استفاده شود. این قوانین برای تفسیر مولفههای موجود در ساختار استفاده میشوند. زبان مدلسازی میتواند گرافیکی یا متنی باشد. از زبانهای مدلسازی گرافیکی که در ارتباط با طراحی نرمافزار کاربرد دارند باید به زبان توصیف معماری (ADL) که برای توصیف و نمایندگی معماری نرمافزار یک سیستم نرمافزاری است، نشانهگذاری مدلسازی فرایند کسب و کار (BPMN)، EXPRESS و (EXPRESS-G (ISO 10303-1 یک استاندارد همه منظوره بینالمللی برای مدلسازی دادهها است، زبان مدلسازی سازمانی توسعه یافته (EEML) که برای مدلسازی فرایند کسب و کار در لایههای زیادی استفاده میشود، فلوچارت نمایش شماتیک از الگوریتم یا فرایند محاسبات، مفاهیم اساسی مدلسازی (FMC) که زبان مدلسازی برای سیستم فشرده نرمافزار است، IDEF خانوادهایی از زبانهای مدلسازی (IDEF0 برای مدلسازی عملکرد، IDEF1X برای مدلسازی اطلاعات، و IDEF5 برای مدلسازی هستیشناسی (علم)) اشاره کرد.